package com.ssy.lingxi.common.constant.order;

import com.ssy.lingxi.common.language.LanguageHolder;

import java.util.Arrays;

/**
 * 交易流程类型枚举
 * @author 万宁
 * @version 2.0.0
 * @date 2021-07-23
 */
public enum OrderTradeProcessTypeEnum {

    /**
     * 订单交易流程 - 1
     */
    ORDER_TRADE(1, "订单交易流程"),

    /**
     * 售后换货流程 - 2
     */
    AFTER_SALES_EXCHANGES(2, "售后换货流程"),

    /**
     * 售后退货流程 - 3
     */
    AFTER_SALES_RETURNS(3, "售后退货流程"),

    /**
     * 售后维修流程 - 4
     */
    AFTER_SALES_MAINTENANCE(4, "售后维修流程"),

    /**
     * 生产加工流程 - 5
     */
    PRODUCTION(5, "生产加工流程"),

    /**
     * 积分订单流程 - 6
     */
    RIGHT_POINT(6, "积分订单流程"),

    /**
     * 跨境电商进口订单流程 - 7
     */
    ORDER_COMMERCE_IMPORT(7, "跨境电商进口订单流程");

    private Integer code;

    OrderTradeProcessTypeEnum(Integer code, String name) {
        this.code = code;
    }

    public Integer getCode() {
        return code;
    }

    public String getName() {
        return LanguageHolder.getName(this.getClass(), this.getCode());
    }

    public static String getNameByCode(Integer code) {
        return LanguageHolder.getName(OrderTradeProcessTypeEnum.class, code);
    }

    public static OrderTradeProcessTypeEnum parse(Integer code) {
        return Arrays.stream(OrderTradeProcessTypeEnum.values()).filter(e -> e.getCode().equals(code)).findFirst().orElse(null);
    }
}
